//求 1+2+...+n ，要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句（A?B:C）。 
//
// 
//
// 示例 1： 
//
// 输入: n = 3
//输出: 6
// 
//
// 示例 2： 
//
// 输入: n = 9
//输出: 45
// 
//
// 
//
// 限制： 
//
// 
// 1 <= n <= 10000 
// 
// Related Topics 位运算 递归 脑筋急转弯 👍 512 👎 0

package leetcode.editor.cn;
//leetcode submit region begin(Prohibit modification and deletion)
class SolutionOffer64 {

    public int sumNums(int n) {
       boolean flag = n > 1 && (n+=sumNums(n-1)) > 0;
       return n;
    }

    int res = 0;
    public int sumNums2(int n) {
        boolean flag = n > 1 && sumNums(n-1) > 0; //n =1时不会进入递归，会继续往下执行，开始执行加法
        res += n; //回溯的时候进行加，n=1的时候也可以加，因为上一句没有返回
        return res;
    }

    public int sumNums1(int n) {
        if(n == 1) return 1; //不能使用if!
        return n + sumNums1(n-1);
    }
}
//leetcode submit region end(Prohibit modification and deletion)
